<?php

class Code{
	//定义变量。保存资源
	private $img;
	
	//显示验证码
	public function show(){
		//发送头部
		header('Content-type:image/png');
		//创建画布。填充画布
		$this->createBg();
		//写字
		$this->write();
		//干扰
		$this->makeTrouble();
		//输出
		imagepng($this->img);
		//销毁
		imagedestroy($this->img);
	}
	
	//创建画布，填充画布。
	private function createBg(){
		//创建画布大小
		$img=imagecreatetruecolor(200, 50);
		//组合画布颜色
		$white = imagecolorallocate($img, 255, 255, 255);
		imagefill($img, 0,0, $white);
		//存入变量 ，保存资源
		$this->img = $img;
	}



	//写字
	private function write(){
		//调用变量
		$img=$this->img;
		//验证码种子
		$str='';
		$seed = "1234567890qweyuiopasdklzxcvbnm";
		for ($i=0; $i < 4; $i++) {
			//随机一位验证码
			$text = $seed[mt_rand(0, strlen($seed) - 1)];
			$str=$str.$text;
			//随机颜色
			$color = imagecolorallocate($img, mt_rand(0, 255), mt_rand(0, 255), mt_rand(0, 255));
			//算出x坐标 $i * 宽度/4
			$x = $i * (200 / 4) + 10;
			//(画布高度+字体高度)/2
			$y = (50 + 30) / 2;
			//开始写字
			imagettftext($img, 30, mt_rand(-45, 45), $x, $y, $color, './font.ttf', $text);
		}
		$_SESSION['str']=strtoupper($str);
//		var_dump($str);
		//存入变量，保存资源
		$this->img = $img;
	}


	
	//干扰
	private function makeTrouble(){
		//调用变量
		$img=$this->img;
		//点随机
		for ($i=0; $i < 300; $i++) {
			//随机颜色
			$color = imagecolorallocate($img, mt_rand(0, 255), mt_rand(0, 255), mt_rand(0, 255)); 
			//点的位置随机
			imagesetpixel($img, mt_rand(0, 200), mt_rand(0, 50), $color);
		}
		//线条随机
		for ($i=0; $i < 3; $i++) {
			//随机颜色
			$color = imagecolorallocate($img, mt_rand(0, 255), mt_rand(0, 255), mt_rand(0, 255)); 
			//线
			imageline($img, mt_rand(0, 200), mt_rand(0, 50), mt_rand(0, 200), mt_rand(0, 50), $color);
		}
		//圆圈气泡随机
		for ($i=0; $i < 10; $i++) {
			//随机颜色
			$color = imagecolorallocate($img, mt_rand(0, 255), mt_rand(0, 255), mt_rand(0, 255)); 
			//圆的宽高
			$wh = mt_rand(0, 20);
			//圆
			imageellipse($img, mt_rand(0, 200), mt_rand(0, 50), $wh, $wh, $color);
		}
		//存入变量 ，保存资源
//		$this->img = $img;
	}
	
	
}

//$code = new Code();
//$code->show();













?>